module features.ruby_gem; public import feature; import commons; Feature FeatureMakeRubyGem( string gemName, string purpose, VersionRange supportedVersion = VersionRange.init, TargetVersion currentVersion = TargetVersion.init, OS[] requiredOn = null, Feature*[] dependencies = null ) { import std.process; return Feature("Ruby Gem: "~gemName, purpose, ExistenceChecker([], [], (ref Terminal t, TargetVersion v, out ExistenceStatus where) { if(executeShell("gem list | grep "~gemName).status) { where = ExistenceStatus(ExistenceStatus.Place.notFound); return false; } where = ExistenceStatus(ExistenceStatus.place.inPath); return true; }), Installation([], (ref Terminal t, ref RealTimeConsoleInput input, TargetVersion ver, Download[] content) { return t.wait(spawnShell("sudo gem install "~gemName)) == 0; }), null, supportedVersion, currentVersion, requiredOn, dependencies); }